package com.example.thread2.thread1;

public class LiftOff implements Runnable {
    protected int countDown = 10;
    private static int taskCount = 0;
    private final int id = taskCount++;
    public LiftOff(){}
    public LiftOff(int countDown){
        this.countDown = countDown;
    }
    public String status(){
        return "#" + id + "(" + (countDown > 0 ? countDown : "Liftoff!" ) + ").";
    }

    @Override
    public void run() {
        while (countDown -- > 0){
            System.out.println(status());
            Thread.yield();
        }
    }

    public static void main(String[] args) {
        //test1();
        //test2();
        test3();
    }

    public static void test1(){
        LiftOff liftOff = new LiftOff();
        liftOff.run();
    }

    public static void test2(){
        Thread thread = new Thread(new LiftOff(100));
        thread.start();
        System.out.println("waiting for LiftOff");
    }

    public static void test3(){
        for(int i=0; i<5; i++){
            new Thread(new LiftOff()).start();
            System.out.println("Waiting for LiftOff");
        }
    }
}
